[INV-BACKEND-027] Создать метод CreateManualDish()
Реализация оркестратора контура кулинарного цикла
NoteКраткая карточка задачи
- Репозиторий / Компонент:
cook-service(Домен INVENTORY). - Контракт метода: HTTP Handler
CreateManualDish(). - Ссылка на Метод: Спецификация публикации фактов создания готовых блюд
- Статус: Готово к реализации
- Инструкция по шагам:
- Принять контракт формы от шлюза. Извлечь строковое поле
dish_name,app_lang,space_typeи массив продуктовspent_items. - На Шаге 4–5: Выполнить синхронный блокирующий gRPC-вызов
checkTextк сервису цензурыcensorship-control-worker, передавdish_nameиapp_lang. - На Шаге 5а: Если gRPC-ответ возвращает флаг
is_clean == false, мгновенно прекратить обработку, не открывая транзакцию склада, и вернуть шлюзу HTTP-код422с реестровой ошибкой о недопустимом содержимом. - На Шаге 5б: Если
is_clean == true, инициировать следующий gRPC-шаг к сервису инвентаряfridge-serviceна методmutateBalances, передав массивspent_itemsи контекст локацииspace_type. - При получении успешного gRPC-ответа от склада вернуть шлюзу статус
HTTP 200 OK. - На Шаге 11: В фоновом режиме (после отправки ответа клиенту) сформировать и опубликовать событие в Kafka-топик
bpds.inventory.out.meal_item.createс payload:dish_name,total_portions,spent_items,space_typeи сквознымx_request_id(case_id).
- Принять контракт формы от шлюза. Извлечь строковое поле